The explosion of the Internet, enterprise computing, cloud computing, content delivery over networks, and other computing and networking capabilities has been accompanied by like explosions in data storage solutions as these various computing capabilities require and take advantage of ever increasing amounts of stored data. One type of storage solution is referred to as a storage area network or “SAN.” Generally speaking, a SAN is a network that provides a server access to data storage such as hard disk drives and other disk arrays, tape storage, and other forms of memory and storage. A SAN primarily provides access to storage devices that are generally not accessible through other types of networks, such as local area networks.
The small computer system interface (SCSI) is a protocol that provides a set of standards for connecting and transferring data between a host computer and peripheral devices in SAN environments. In the parlance of an SCSI SAN, the SAN includes an initiator host and a target device. The host, also known as a client, typically includes at least one initiator. The target device, which could be a storage array, typically includes at least one target port and at least one logical unit. At a high level, the client initiates a request to the target device through an SCSI command, and the target device provides the necessary input and output commands to the storage to service the request. Thus, the communication between the initiator (I) and the target (T) through an SCSI interface involves sending requests from an initiator to a target which then responds to the request by issuing I/O operations to the logical unit (LU). In general, the logical unit can be either a physical device such as a tape drive, disk drive, etc. or a processing agent that implements functionality of the logical unit.
Because in a typical computing environment multiple host systems may communicate with one or more target devices, a controller may be used to process requests from the various host systems. In particular, the controller may be used to manage access to target devices through one or more logical paths. The controller, for example, may utilize information for each possible connection comprising an initiator (host port), target (storage controller port) and storage device logical unit, such as ITL (initiator, target, LU) nexus information to facilitate processing of received requests. In particular, the combination of the initiator port, target port and logical unit information helps define a path along which a storage device may be accessed.
The SCSI tasks arriving from different hosts are typically processed on a target device on a first-come-first-serve (FIFS) basis with neither fairness nor prioritization being given to any of the tasks. Thus, in some instances, such as when numerous hosts or initiators direct a large number of requests toward a storage array or target device, and the array is not able to immediately process all the requests, congested situations may arise causing the system to slow in its ability to handle the requests. In such cases, the arriving requests are queued until the resources become available to service the queued requests. The use of FIFS in congested situations is especially unfair when the system includes slow clients, as the requests from faster machines are served more frequently. In particular, because requests from faster machines arrive at the target device at a faster rate, more requests from faster clients are processed at the target devices as compared to the requests arriving from the slower clients. This uneven sharing of the execution resources often leads to reduced I/O performance on the slower machines.
Thus, in order to more equally process tasks from all hosts regardless of their speed, there is a need for a system that provides fairness among all active SCSI ITS nexus during congested situations. In particular, there is a need for a system that is capable of allocating a fair share of execution resources to all of the machines/initiators regardless of their speed when resources are contended. It is with respect to these and other considerations that embodiments of the present disclosure have been made.